package com.sob.bountyhunter.entidades.mecanismos;

import org.newdawn.slick.GameContainer;
import org.newdawn.slick.SlickException;
import com.sob.bountyhunter.Mapa;
import com.sob.bountyhunter.Temporizador;
import com.sob.bountyhunter.entidades.Entidad;
import com.sob.bountyhunter.entidades.actores.Actor;
import com.sob.bountyhunter.entidades.actores.Jugador;
import com.sob.bountyhunter.entidades.actores.Mob;

public class Mecanismo extends Entidad{
	public boolean isOpen = false;	
	protected Temporizador coolDownTimer;
	
	protected int coolDown = 500;
	//protected long coolDownStart;
	//protected boolean inCoolDown = false;
	protected String nombre="";
	public String union="";
	protected Mecanismo mUnion=null; 
	
	public Mecanismo(String i) throws SlickException {
		super();
		nombre=i;
		coolDownTimer=new Temporizador(coolDown);
		coolDownTimer.stop();
	}
		
	@Override
	public void usar(Actor e, Mapa map)
	{
		super.usar(e, map);
		//if(!inCoolDown){
			//coolDownStart=System.currentTimeMillis();
			//inCoolDown=true;
		if(!coolDownTimer.isRunning()){
			coolDownTimer.start();
			//Si no hay nada chocando con la entidad
			if(!colision(map, Jugador.class.getName()) && !colision(map, Mob.class.getName())){
				//Se usa
				doUsar(e);
				
				//Activa tambien la entidad que estubiese unida a esta
				if(mUnion!=null){
					if(!mUnion.equals(e)){
						mUnion.usar(e, map);
					}
				}
			}
		}		
	}
		
	protected void doUsar(Entidad e)
	{
	}

	public void update(GameContainer gameContainer, int deltaTime, Mapa map)
	{
		super.update(gameContainer, deltaTime, map);
		/*
		if(inCoolDown){
			if(System.currentTimeMillis()>=coolDownStart+coolDown){
				inCoolDown=false;
				coolDownStart=0;
			}
		}*/
		if(mUnion==null && !union.equals("")){
			for(Entidad e: map.entidades){
				if(e instanceof Mecanismo){
					Mecanismo m=(Mecanismo)e;
					if(m.nombre.equals(union)){
						mUnion=m;
					}
				}
			}
		}
	}	
}
